perm filename UCODE[S1,ALS]1 blob
sn#419039 filedate 1979-02-16 generic text, type C, neo UTF8
COMMENT ⊗ VALID 00007 PAGES
C REC PAGE DESCRIPTION
C00001 00001
C00002 00002 Classified list of changes from PCODE to UCODE
C00006 00003 UCODE instructions with no PCODE equivalent
C00007 00004 U_OPCODE = (
C00012 00005 AND,BGN,CHR,DIF,FJP,FLO,FLT,INN,INT,IOR,IXA,LCA,LDC,LOC,MOV,NEW,NOT,ODD,ORD,PAR,SGS,STP,TRC,UNI,
C00013 00006 Suggested coordination scheme for PCODE to UCODE conversion
C00017 00007 Proposed code record
C00021 ENDMK
C⊗;
Classified list of changes from PCODE to UCODE
( * preceeding indicates fixed by ALS)
2 PCODES into 1 UCODE with data type as operand
ABI ABR ABS I ABS R
ADI ADR ADD I ADD R
DVI DVR DIV I DIV R
MPI MPR MPY I MPY R
NGI NGR NEG I NEG R
2 PCODES into 1 UCODE with block # distinction
LDO t,off LOD t m 1 off len
LOD t,lev,off LOD t m blkno off len
SRO t,off STR t m 1 off len
STR t,lev,off STR t m blkno off len
LAO off LDA m 1 off len
LDA lev,off LDA m blkno off len
1 PCODE into UCODES pair
CHK t,lb,ub CHKL t lb CHKU t ub
1 PCODE into UCODE pair for direct and indirect relational
EQU t,len EQU t len IEQU t len
GEQ t,len GWQ t len IGEQ t len
GRT t,len GRT t len IGRT t len
LEQ t,len LEQ t len ILEQ t len
LES t,len LES t len ILES t len
NEQ t,len NEQ t,len INEQ t len
1 PCODE replaced by more than 1 UCODE
DEF len DEF M len
END uproc
ENT t,lev,ds,id,g,f,d ENT t level blkno push pop pass
LEX 1 blk
LEX 2 blk
...
PSTR t m blkno off len
PSTR t m blkno off len
...
RET t PLOD t m blkno off len
RET
SAV UNK 0 0 SAV
STO A 0 len
XJP label CHKL I 0
CHKH I value
XJP label
...
...
CLAB size
PCODE into UNK instruction with operand
RST UNK 0 0 RST
SST t,proc,lev,2,3,4,5 UNK 0 0 SST t,proc,lev,2,3,4,5
TOF UNK 0 0 TOF
TON UNK O O TON
PCODE with different operand order UCODE
CSP sproc CSP t sproc push pop
CUP t,nprmfl,uproc CUP t blkmo uproc push pop nprmfl
See RLS for difference
MST lev,fpsiz,rpsiz MST level fpsiz rpsiz
Extra Operand added
IND t,off IND t off len
*LAB LAB 0
Replace comma by space
*DEC t,off DEC t off
*INC t,off INC t off
No change
* AND
* BGN value
* CHR
* DIF
* FJP label
* FLO
* FLT
* INN
* INT
* IOR
* IXA off
* LCA string
* LDC
* LOC off
* MOV len
* NEW len
* NOT
* ODD
* ORD
* PAR t
* SGS
* STP
* TRC
* UNI
* Fixed by ALS
UCODE instructions with no PCODE equivalent
CHKN
CHKT
CLAB count
COMM
DEAD mt blkn off len
DMD dt
DOA mt blkn off len
DUP dt
ENT dt level blkn pop push
IGEQ dt len
IGRT dt len
ILES dt len
LEX level blkn
LIVE mt blkn off len
MDEF mt len min max dtlist
MUS
NSTR dt mt blkn off len
OPTN dt off
PLOD dt mt blkn off len
PSTR dt mt blkn off len
SUB dt
SWP dt1 dt2
SYM dt mt blkn off len
YJP lbl
TYP dt
U_OPCODE = (
UABS , UADD , UAND , UBGN , UCHKF, UCHKH, UCHKL, UCHKN,
UCHKT, UCHR , UCLAB, UCOMM, UCSP , UCUP , UDEAD, UDEC ,
UDEF , UDIF , UDIV , UDMD , UDOA , UDUP , UEND , UENT ,
UEQU , UFJP , UFLO , UFLT , UGEQ , UGRT , UIEQU, UIGEQ,
UIGRT, UILEQ, UILES, UINC , UIND , UINEQ, UINN , UINT ,
UIOR , UIXA , ULAB , ULCA , ULDA , ULDC , ULEQ , ULES ,
ULEX , ULIVE, ULOC , ULOD , UMDEF, UMOD , UMOV , UMPY ,
UMST , UMUS , UNEG , UNEQ , UNEW , UNOT , UNSTR, UODD ,
UORD , UOPTN, UPAR , UPLOD, UPSTR, URET , USGS , USQR ,
USTO , USTP , USTR , USUB , USWP , USYM , UTJP , UTRC ,
UTYP , UUJP , UUNI , UUNK , UXJP );
ENTER_OPC ('ABS ', UABS); ENTER_OPC ('ADD ', UADD);
ENTER_OPC ('AND ', UAND); ENTER_OPC ('BGN ', UBGN);
ENTER_OPC ('CHKF', UCHKF); ENTER_OPC ('CHKH', UCHKH);
ENTER_OPC ('CHKL', UCHKL); ENTER_OPC ('CHKN', UCHKN);
ENTER_OPC ('CHKT', UCHKT); ENTER_OPC ('CHR ', UCHR);
ENTER_OPC ('CLAB', UCLAB); ENTER_OPC ('COMM', UCOMM);
ENTER_OPC ('CSP ', UCSP); ENTER_OPC ('CUP ', UCUP);
ENTER_OPC ('DEAD', UDEAD); ENTER_OPC ('DEC ', UDEC);
ENTER_OPC ('DEF ', UDEF); ENTER_OPC ('DIF ', UDIF);
ENTER_OPC ('DIV ', UDIV); ENTER_OPC ('DMD ', UDMD);
ENTER_OPC ('DOA ', UDOA); ENTER_OPC ('DUP ', UDUP);
ENTER_OPC ('END ', UEND); ENTER_OPC ('ENT ', UENT);
ENTER_OPC ('EQU ', UEQU); ENTER_OPC ('FJP ', UFJP);
ENTER_OPC ('FLO ', UFLO); ENTER_OPC ('FLT ', UFLT);
ENTER_OPC ('GEQ ', UGEQ); ENTER_OPC ('GRT ', UGRT);
ENTER_OPC ('IEQU', UIEQU); ENTER_OPC ('IGEQ', UIGEQ);
ENTER_OPC ('IGRT', UIGRT); ENTER_OPC ('ILEQ', UILEQ);
ENTER_OPC ('ILES', UILES); ENTER_OPC ('INC ', UINC);
ENTER_OPC ('IND ', UIND); ENTER_OPC ('INEQ', UINEQ);
ENTER_OPC ('INN ', UINN); ENTER_OPC ('INT ', UINT);
ENTER_OPC ('IOR ', UIOR); ENTER_OPC ('IXA ', UIXA);
ENTER_OPC ('LAB ', ULAB); ENTER_OPC ('LCA ', ULCA);
ENTER_OPC ('LDA ', ULDA); ENTER_OPC ('LDC ', ULDC);
ENTER_OPC ('LEQ ', ULEQ); ENTER_OPC ('LES ', ULES);
ENTER_OPC ('LEX ', ULEX); ENTER_OPC ('LIVE', ULIVE);
ENTER_OPC ('LOC ', ULOC); ENTER_OPC ('LOD ', ULOD);
ENTER_OPC ('MDEF', UMDEF); ENTER_OPC ('MOD ', UMOD);
ENTER_OPC ('MOV ', UMOV); ENTER_OPC ('MPY ', UMPY);
ENTER_OPC ('MST ', UMST); ENTER_OPC ('MUS ', UMUS);
ENTER_OPC ('NEG ', UNEG); ENTER_OPC ('NEQ ', UNEQ);
ENTER_OPC ('NEW ', UNEW); ENTER_OPC ('NOT ', UNOT);
ENTER_OPC ('NSTR', UNSTR); ENTER_OPC ('ODD ', UODD);
ENTER_OPC ('ORD ', UORD); ENTER_OPC ('OPTN', UOPTN);
ENTER_OPC ('PAR ', UPAR); ENTER_OPC ('PLOD', UPLOD);
ENTER_OPC ('PSTR', UPSTR); ENTER_OPC ('RET ', URET);
ENTER_OPC ('SGS ', USGS); ENTER_OPC ('SQR ', USQR);
ENTER_OPC ('STO ', USTO); ENTER_OPC ('STP ', USTP);
ENTER_OPC ('STR ', USTR); ENTER_OPC ('SUB ', USUB);
ENTER_OPC ('SWP ', USWP); ENTER_OPC ('SYM ', USYM);
ENTER_OPC ('TJP ', UTJP); ENTER_OPC ('TRC ', UTRC);
ENTER_OPC ('TYP ', UTYP); ENTER_OPC ('UJP ', UUJP);
ENTER_OPC ('UNI ', UUNI); ENTER_OPC ('UNK ', UUNK);
ENTER_OPC ('XJP ', UXJP);
AND,BGN,CHR,DIF,FJP,FLO,FLT,INN,INT,IOR,IXA,LCA,LDC,LOC,MOV,NEW,NOT,ODD,ORD,PAR,SGS,STP,TRC,UNI,
Suggested coordination scheme for PCODE to UCODE conversion
Three lists of U_OPCODEs will be maintained, two of them commented out, as
shown on the attached sheet. One list will be the proposed UCODE list
that is being implemented. Of the two commented-out lists, initially, one
will be the existing P_OPCODE list and the other will be a duplicate of the
proposed U_OPCODE list.
As PCODEs are replaced by UCODEs in SOPA the individual PCODEs in the
commented-out list will be moved to the end of the list after the initials
of the person doing the replacement. To guard against the possibility of
being interrupted while making the substitution, one should add an
asterisk * to the transfered instruction and only remove this * when the
work is completed.
If the replacing UCODE is never needed in connection with some other PCODE
(example: UNK, which is used for several PCODEs) then this UCODE is
removed from the beginning of the commented-out list and moved to the end
of the list, again after the initials of the person doing the work. If
the UCODE is used for several PCODEs and some substitutions are still to
be made, then the UCODE is added to the initialed list but it is not
removed from the beginning list. Again an asterisk * should be used to
mark work in progress.
By using this technique, we will always have a complete list of the PCODEs
that are yet to be converted and a list of unimplemented UCODEs. When
both lists have been exausted, the job will be done.
One added suggestion: Since some UCODEs are 3 characters in length and some
are 4 and since this will cause some complications, it seems better to pad
the 3-character codes with a terminating space and then treat all codes
internally as 4-character names. This will require that MNAM and all its
derivatives be typed as CHAR4 not CHAR3 and a few procedures will have to
be changed as shown by a typical example below. Since extra spaces are
permitted in Ucode, this should cause no trouble.
begin (*READNXTINST*)
if INPUT↑ <> ' ' then READNAM (NAM0);
repeat get(INPUT) until INPUT↑ <> ' ';
(* READ(MNEM); *)
READ(CH); MNEM[1] := CH;
READ(CH); MNEM[2] := CH;
READ(CH); MNEM[3] := CH;
if INPUT↑ <> ' ' then READ(CH) else CH := ' '; (* 7FEB79 ALS*)
MNEM[4] := CH; (*ALS*)
OPC := MNEM_TO_OPC(MNEM);
Proposed code record
U_OPCODE = (
UABS , UADD , UAND , UBGN , UCHKF, UCHKH, UCHKL, UCHKN,
UCHKT, UCHR , UCLAB, UCOMM, UCSP , UCUP , UDEAD, UDEC ,
UDEF , UDIF , UDIV , UDMD , UDOA , UDUP , UEND , UENT ,
UEQU , UFJP , UFLO , UFLT , UGEQ , UGRT , UIEQU, UIGEQ,
UIGRT, UILEQ, UILES, UINC , UIND , UINEQ, UINN , UINT ,
UIOR , UIXA , ULAB , ULCA , ULDA , ULDC , ULEQ , ULES ,
ULEX , ULIVE, ULOC , ULOD , UMDEF, UMOD , UMOV , UMPY ,
UMST , UMUS , UNEG , UNEQ , UNEW , UNOT , UNSTR, UODD ,
UORD , UOPTN, UPAR , UPLOD, UPSTR, URET , USGS , USQR ,
USTO , USTP , USTR , USUB , USWP , USYM , UTJP , UTRC ,
UTYP , UUJP , UUNI , UUNK , UXJP );
(* Work in progress lists
P_OPCODE = (
PABI, PABR, PADI, PAND, PBGN, PCHK, PCHR, PCSP,
PCUP, PDEC, PDEF, PDIF, PDVI, PENT, PEOF, PFJP,
PFLO, PFLT, PINC, PIND, PINN, PINT, PIOR, PIXA,
PLAB, PLAO, PLCA, PLDA, PLDC, PLDO, PLOC, PLOD,
PMOD, PMOV, PMPI, PMST, PNEW, PNGI, PNGR, PNOT,
PODD, PORD, PPAR, PPRE, PRET, PRST, PSAV, PSBI,
PSGS, PSQI, PSQR, PSRO, PSST, PSTO, PSTP, PSTR,
PSUC, PTOF, PTON, PTRC, PUJP, PUNI, PXJP, PADR,
PSBR, PMPR, PDVR, PEQU, PNEQ, PGEQ, PGRT, PLEQ,
PLES);
ALS list
PN list
U_OPCODE = (
UABS , UADD , UAND , UBGN , UCHKF, UCHKH, UCHKL, UCHKN,
UCHKT, UCHR , UCLAB, UCOMM, UCSP , UCUP , UDEAD, UDEC ,
UDEF , UDIF , UDIV , UDMD , UDOA , UDUP , UEND , UENT ,
UEQU , UFJP , UFLO , UFLT , UGEQ , UGRT , UIEQU, UIGEQ,
UIGRT, UILEQ, UILES, UINC , UIND , UINEQ, UINN , UINT ,
UIOR , UIXA , ULAB , ULCA , ULDA , ULDC , ULEQ , ULES ,
ULEX , ULIVE, ULOC , ULOD , UMDEF, UMOD , UMOV , UMPY ,
UMST , UMUS , UNEG , UNEQ , UNEW , UNOT , UNSTR, UODD ,
UORD , UOPTN, UPAR , UPLOD, UPSTR, URET , USGS , USQR ,
USTO , USTP , USTR , USUB , USWP , USYM , UTJP , UTRC ,
UTYP , UUJP , UUNI , UUNK , UXJP );
ALS list
PN list
*)